﻿
namespace SolutionFramework.Entities
{
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.ComponentModel.DataAnnotations;
    using System.Data.Objects.DataClasses;
    using System.Linq;
    using System.ServiceModel.DomainServices.Hosting;
    using System.ServiceModel.DomainServices.Server;


    // The MetadataTypeAttribute identifies ApplicationMetadata as the class
    // that carries additional metadata for the Application class.
    [MetadataTypeAttribute(typeof(Application.ApplicationMetadata))]
    public partial class Application
    {

        // This class allows you to attach custom attributes to properties
        // of the Application class.
        //
        // For example, the following marks the Xyz property as a
        // required property and specifies the format for valid values:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class ApplicationMetadata
        {

            // Metadata classes are not meant to be instantiated.
            private ApplicationMetadata()
            {
            }

            public Guid ApplicationId { get; set; }

            public Nullable<Guid> ApplicationNodeId { get; set; }

            public string Name { get; set; }

            public Nullable<Guid> ProjectId { get; set; }
        }
    }

    // The MetadataTypeAttribute identifies ApplicationNodeMetadata as the class
    // that carries additional metadata for the ApplicationNode class.
    [MetadataTypeAttribute(typeof(ApplicationNode.ApplicationNodeMetadata))]
    public partial class ApplicationNode
    {

        // This class allows you to attach custom attributes to properties
        // of the ApplicationNode class.
        //
        // For example, the following marks the Xyz property as a
        // required property and specifies the format for valid values:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class ApplicationNodeMetadata
        {

            // Metadata classes are not meant to be instantiated.
            private ApplicationNodeMetadata()
            {
            }

            public Guid ApplicationNodeId { get; set; }

            public Nullable<Guid> DevProjectInformationId { get; set; }

            public Nullable<Guid> FunctionalSpecificationItemId { get; set; }

            public string NamespaceFragment { get; set; }

            public string NodeDescription { get; set; }

            public Nullable<Guid> NodeHelpContextId { get; set; }

            public Nullable<Guid> NodeName { get; set; }

            public Nullable<Guid> NodeRefId { get; set; }

            public Nullable<Guid> ParentCondensedNodeId { get; set; }

            public Nullable<Guid> ParentNodeId { get; set; }

            public Nullable<Guid> SupportRoutingId { get; set; }
        }
    }

    // The MetadataTypeAttribute identifies ApplicationRootMetadata as the class
    // that carries additional metadata for the ApplicationRoot class.
    [MetadataTypeAttribute(typeof(ApplicationRoot.ApplicationRootMetadata))]
    public partial class ApplicationRoot
    {

        // This class allows you to attach custom attributes to properties
        // of the ApplicationRoot class.
        //
        // For example, the following marks the Xyz property as a
        // required property and specifies the format for valid values:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class ApplicationRootMetadata
        {

            // Metadata classes are not meant to be instantiated.
            private ApplicationRootMetadata()
            {
            }

            public Nullable<Guid> ApplicationId { get; set; }

            public Nullable<Guid> ApplicationNodeId { get; set; }

            public Guid ApplicationRootId { get; set; }

            public Nullable<Guid> IconId { get; set; }

            public string RobotsText { get; set; }
        }
    }

    // The MetadataTypeAttribute identifies DevProjectInformationMetadata as the class
    // that carries additional metadata for the DevProjectInformation class.
    [MetadataTypeAttribute(typeof(DevProjectInformation.DevProjectInformationMetadata))]
    public partial class DevProjectInformation
    {

        // This class allows you to attach custom attributes to properties
        // of the DevProjectInformation class.
        //
        // For example, the following marks the Xyz property as a
        // required property and specifies the format for valid values:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class DevProjectInformationMetadata
        {

            // Metadata classes are not meant to be instantiated.
            private DevProjectInformationMetadata()
            {
            }

            public Nullable<Guid> ApplicationMapItemId { get; set; }

            public Nullable<Guid> FunctionalSpecificationItemId { get; set; }

            public Nullable<Guid> ProductOwnerId { get; set; }

            public Nullable<Guid> ProjectId { get; set; }

            public Guid ProjectInformationId { get; set; }

            public Nullable<Guid> UserAcceptanceItemId { get; set; }

            public Nullable<Guid> WBSDictionaryAnalysisItemId { get; set; }

            public Nullable<Guid> WBSDictionaryAppFrameworkItemId { get; set; }

            public Nullable<Guid> WBSDictionaryDesignItemId { get; set; }

            public Nullable<Guid> WBSDictionaryDevelopmentItemId { get; set; }

            public Nullable<Guid> WBSDictionaryFunctionItemId { get; set; }
        }
    }

    // The MetadataTypeAttribute identifies ProductMetadata as the class
    // that carries additional metadata for the Product class.
    [MetadataTypeAttribute(typeof(Product.ProductMetadata))]
    public partial class Product
    {

        // This class allows you to attach custom attributes to properties
        // of the Product class.
        //
        // For example, the following marks the Xyz property as a
        // required property and specifies the format for valid values:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class ProductMetadata
        {

            // Metadata classes are not meant to be instantiated.
            private ProductMetadata()
            {
            }

            public Guid ProductId { get; set; }

            public string ProductName { get; set; }
        }
    }

    // The MetadataTypeAttribute identifies TreeBuilderRootMetadata as the class
    // that carries additional metadata for the TreeBuilderRoot class.
    [MetadataTypeAttribute(typeof(TreeBuilderRoot.TreeBuilderRootMetadata))]
    public partial class TreeBuilderRoot
    {

        // This class allows you to attach custom attributes to properties
        // of the TreeBuilderRoot class.
        //
        // For example, the following marks the Xyz property as a
        // required property and specifies the format for valid values:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class TreeBuilderRootMetadata
        {

            // Metadata classes are not meant to be instantiated.
            private TreeBuilderRootMetadata()
            {
            }

            public Guid TreeBuilderRootID { get; set; }

            [Include(), Association("TreeBuilderRoot_TreeNodeBase", "TreeNodeBaseID", "TreeNodeBaseID")]
            public TreeNodeBase TreeNodeBase { get; set; }

            public Guid TreeNodeBaseID { get; set; }
        }
    }

    // The MetadataTypeAttribute identifies TreeNodeAdvancedQueryMetadata as the class
    // that carries additional metadata for the TreeNodeAdvancedQuery class.
    [MetadataTypeAttribute(typeof(TreeNodeTransferMapping.TreeNodeTransferMappingMetadata))]
    public partial class TreeNodeTransferMapping : EntityObject
    {
        internal sealed class TreeNodeTransferMappingMetadata
        {
            [Include(), Association("TreeNodeTransferMapping_TreeNodeBase", "TreeNodeBaseID", "TreeNodeBaseID")]
            public TreeNodeBase TreeNodeBase { get; set; }

            public Guid TreeNodeBaseID { get; set; }
        }
    }

    // The MetadataTypeAttribute identifies TreeNodeAdvancedQueryMetadata as the class
    // that carries additional metadata for the TreeNodeAdvancedQuery class.
    [MetadataTypeAttribute(typeof(TreeNodeRecycleBin.TreeNodeRecycleBinMetadata))]
    public partial class TreeNodeRecycleBin : EntityObject
    {
        internal sealed class TreeNodeRecycleBinMetadata
        {
            [Include(), Association("TreeNodeRecycleBin_TreeNodeBase", "TreeNodeBaseID", "TreeNodeBaseID")]
            public TreeNodeBase TreeNodeBase { get; set; }

            public Guid TreeNodeBaseID { get; set; }
        }
    }

    // The MetadataTypeAttribute identifies TreeNodeAdvancedQueryMetadata as the class
    // that carries additional metadata for the TreeNodeAdvancedQuery class.
    [MetadataTypeAttribute(typeof(TreeNodeAdvancedQuery.TreeNodeAdvancedQueryMetadata))]
    public partial class TreeNodeAdvancedQuery
    {

        // This class allows you to attach custom attributes to properties
        // of the TreeNodeAdvancedQuery class.
        //
        // For example, the following marks the Xyz property as a
        // required property and specifies the format for valid values:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class TreeNodeAdvancedQueryMetadata
        {

            // Metadata classes are not meant to be instantiated.
            private TreeNodeAdvancedQueryMetadata()
            {
            }

            public string QueryInput { get; set; }

            public Guid TreeNodeAdvancedQueryID { get; set; }

            [Include(), Association("TreeNodeAdvancedQuery_TreeNodeBase", "TreeNodeBaseID", "TreeNodeBaseID")]
            public TreeNodeBase TreeNodeBase { get; set; }

            public Guid TreeNodeBaseID { get; set; }
        }
    }

    // The MetadataTypeAttribute identifies TreeNodeAttributeMetadata as the class
    // that carries additional metadata for the TreeNodeAttribute class.
    [MetadataTypeAttribute(typeof(TreeNodeAttribute.TreeNodeAttributeMetadata))]
    public partial class TreeNodeAttribute
    {

        // This class allows you to attach custom attributes to properties
        // of the TreeNodeAttribute class.
        //
        // For example, the following marks the Xyz property as a
        // required property and specifies the format for valid values:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class TreeNodeAttributeMetadata
        {

            // Metadata classes are not meant to be instantiated.
            private TreeNodeAttributeMetadata()
            {
            }

            public string Attribute { get; set; }

            public Guid TreeNodeAttributeID { get; set; }

            [Include(), Association("TreeNodeAttribute_TreeNodeBase", "TreeNodeBaseID", "TreeNodeBaseID")]
            public TreeNodeBase TreeNodeBase { get; set; }

            public Guid TreeNodeBaseID { get; set; }
        }
    }

    // The MetadataTypeAttribute identifies TreeNodeAttributeMetadata as the class
    // that carries additional metadata for the TreeNodeAttribute class.
    [MetadataTypeAttribute(typeof(TreeNodeMenuItem.TreeNodeMenuItemMetadata))]
    public partial class TreeNodeMenuItem
    {

        // This class allows you to attach custom attributes to properties
        // of the TreeNodeAttribute class.
        //
        // For example, the following marks the Xyz property as a
        // required property and specifies the format for valid values:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class TreeNodeMenuItemMetadata
        {

            // Metadata classes are not meant to be instantiated.
            private TreeNodeMenuItemMetadata()
            {
            }

            [Include(), Association("TreeNodeMenuItem_TreeNodeBase", "TreeNodeBaseID", "TreeNodeBaseID")]
            public TreeNodeBase TreeNodeBase { get; set; }
        }
    }
    // The MetadataTypeAttribute identifies TreeNodeAttributeNodeMetadata as the class
    // that carries additional metadata for the TreeNodeAttributeNode class.
    [MetadataTypeAttribute(typeof(TreeNodeAttributeNode.TreeNodeAttributeNodeMetadata))]
    public partial class TreeNodeAttributeNode
    {

        // This class allows you to attach custom attributes to properties
        // of the TreeNodeAttributeNode class.
        //
        // For example, the following marks the Xyz property as a
        // required property and specifies the format for valid values:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class TreeNodeAttributeNodeMetadata
        {

            // Metadata classes are not meant to be instantiated.
            private TreeNodeAttributeNodeMetadata()
            {
            }

            public string Attribute { get; set; }

            public Guid TreeNodeAttributeNodeID { get; set; }

            [Include(), Association("TreeNodeAttributeNode_TreeNodeBase", "TreeNodeBaseID", "TreeNodeBaseID")]
            public TreeNodeBase TreeNodeBase { get; set; }

            public Guid TreeNodeBaseID { get; set; }
        }
    }


    // The MetadataTypeAttribute identifies TreeNodeAttributeNodeMetadata as the class
    // that carries additional metadata for the TreeNodeAttributeNode class.
    [MetadataTypeAttribute(typeof(TreeNodeOperationNode.TreeNodeOperationNodeMetadata))]
    public partial class TreeNodeOperationNode
    {

        // This class allows you to attach custom attributes to properties
        // of the TreeNodeOperationNode class.
        //
        // For example, the following marks the Xyz property as a
        // required property and specifies the format for valid values:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class TreeNodeOperationNodeMetadata
        {

            // Metadata classes are not meant to be instantiated.
            private TreeNodeOperationNodeMetadata()
            {
            }

            public string Operation { get; set; }

            public Guid TreeNodeOperationNodeID { get; set; }

            [Include(), Association("TreeNodeOperationNode_TreeNodeBase", "TreeNodeBaseID", "TreeNodeBaseID")]
            public TreeNodeBase TreeNodeBase { get; set; }

            public Guid TreeNodeBaseID { get; set; }
        }
    }

    // The MetadataTypeAttribute identifies TreeNodeBaseMetadata as the class
    // that carries additional metadata for the TreeNodeBase class.
    [MetadataTypeAttribute(typeof(TreeNodeBase.TreeNodeBaseMetadata))]
    public partial class TreeNodeBase
    {

        // This class allows you to attach custom attributes to properties
        // of the TreeNodeBase class.
        //
        // For example, the following marks the Xyz property as a
        // required property and specifies the format for valid values:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class TreeNodeBaseMetadata
        {

            // Metadata classes are not meant to be instantiated.
            private TreeNodeBaseMetadata()
            {
            }

            public string Name { get; set; }

            public Nullable<Guid> ParentNodeID { get; set; }

            public EntityCollection<TreeBuilderRoot> TreeBuilderRoots { get; set; }

            public EntityCollection<TreeNodeAdvancedQuery> TreeNodeAdvancedQueries { get; set; }

            public EntityCollection<TreeNodeAttributeNode> TreeNodeAttributeNodes { get; set; }

            [Key()]
            public Guid TreeNodeBaseID { get; set; }

            public EntityCollection<TreeNodeElementNode> TreeNodeElementNodes { get; set; }

            public EntityCollection<TreeNodeFolder> TreeNodeFolders { get; set; }

            public EntityCollection<TreeNodePropertyBinding> TreeNodePropertyBindings { get; set; }

            public EntityCollection<TreeNodeQuery> TreeNodeQueries { get; set; }

            public EntityCollection<TreeNodeRootSource> TreeNodeRootSources { get; set; }
        }
    }

    // The MetadataTypeAttribute identifies TreeNodeElementMetadata as the class
    // that carries additional metadata for the TreeNodeElement class.
    [MetadataTypeAttribute(typeof(TreeNodeElement.TreeNodeElementMetadata))]
    public partial class TreeNodeElement
    {

        // This class allows you to attach custom attributes to properties
        // of the TreeNodeElement class.
        //
        // For example, the following marks the Xyz property as a
        // required property and specifies the format for valid values:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class TreeNodeElementMetadata
        {

            // Metadata classes are not meant to be instantiated.
            private TreeNodeElementMetadata()
            {
            }

            public string Element { get; set; }

            [Include(), Association("TreeNodeElement_TreeNodeBase", "TreeNodeBaseID", "TreeNodeBaseID")]
            public TreeNodeBase TreeNodeBase { get; set; }

            public Guid TreeNodeBaseID { get; set; }

            public Guid TreeNodeElementID { get; set; }
        }
    }

    // The MetadataTypeAttribute identifies TreeNodeElementNodeMetadata as the class
    // that carries additional metadata for the TreeNodeElementNode class.
    [MetadataTypeAttribute(typeof(TreeNodeElementNode.TreeNodeElementNodeMetadata))]
    public partial class TreeNodeElementNode
    {

        // This class allows you to attach custom attributes to properties
        // of the TreeNodeElementNode class.
        //
        // For example, the following marks the Xyz property as a
        // required property and specifies the format for valid values:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class TreeNodeElementNodeMetadata
        {

            // Metadata classes are not meant to be instantiated.
            private TreeNodeElementNodeMetadata()
            {
            }

            public string Element { get; set; }

            [Include(), Association("TreeNodeElementNode_TreeNodeBase", "TreeNodeBaseID", "TreeNodeBaseID")]
            public TreeNodeBase TreeNodeBase { get; set; }

            public Guid TreeNodeBaseID { get; set; }

            public Guid TreeNodeElementNodeID { get; set; }
        }
    }

    // The MetadataTypeAttribute identifies TreeNodeFolderMetadata as the class
    // that carries additional metadata for the TreeNodeFolder class.
    [MetadataTypeAttribute(typeof(TreeNodeFolder.TreeNodeFolderMetadata))]
    public partial class TreeNodeFolder
    {

        // This class allows you to attach custom attributes to properties
        // of the TreeNodeFolder class.
        //
        // For example, the following marks the Xyz property as a
        // required property and specifies the format for valid values:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class TreeNodeFolderMetadata
        {

            // Metadata classes are not meant to be instantiated.
            private TreeNodeFolderMetadata()
            {
            }

            public string FolderItemSource { get; set; }

            [Include(), Association("TreeNodeFolder_TreeNodeBase", "TreeNodeBaseID", "TreeNodeBaseID")]
            public TreeNodeBase TreeNodeBase { get; set; }

            public Guid TreeNodeBaseID { get; set; }

            public Guid TreeNodeFolderID { get; set; }
        }
    }

    // The MetadataTypeAttribute identifies TreeNodePropertyBindingMetadata as the class
    // that carries additional metadata for the TreeNodePropertyBinding class.
    [MetadataTypeAttribute(typeof(TreeNodePropertyBinding.TreeNodePropertyBindingMetadata))]
    public partial class TreeNodePropertyBinding
    {

        // This class allows you to attach custom attributes to properties
        // of the TreeNodePropertyBinding class.
        //
        // For example, the following marks the Xyz property as a
        // required property and specifies the format for valid values:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class TreeNodePropertyBindingMetadata
        {

            // Metadata classes are not meant to be instantiated.
            private TreeNodePropertyBindingMetadata()
            {
            }

            public string PropertySource { get; set; }

            public Nullable<int> PropertyType { get; set; }

            [Include(), Association("TreeNodePropertyBinding_TreeNodeBase", "TreeNodeBaseID", "TreeNodeBaseID")]
            public TreeNodeBase TreeNodeBase { get; set; }

            public Guid TreeNodeBaseID { get; set; }

            public Guid TreeNodePropertyBindingID { get; set; }
        }
    }

    // The MetadataTypeAttribute identifies TreeNodeQueryMetadata as the class
    // that carries additional metadata for the TreeNodeQuery class.
    [MetadataTypeAttribute(typeof(TreeNodeQuery.TreeNodeQueryMetadata))]
    public partial class TreeNodeQuery
    {

        // This class allows you to attach custom attributes to properties
        // of the TreeNodeQuery class.
        //
        // For example, the following marks the Xyz property as a
        // required property and specifies the format for valid values:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class TreeNodeQueryMetadata
        {

            // Metadata classes are not meant to be instantiated.
            private TreeNodeQueryMetadata()
            {
            }

            public string Query { get; set; }

            public string QueryInput { get; set; }

            public string QueryReturn { get; set; }

            [Include(), Association("TreeNodeQuery_TreeNodeBase", "TreeNodeBaseID", "TreeNodeBaseID")]
            public TreeNodeBase TreeNodeBase { get; set; }

            public Guid TreeNodeBaseID { get; set; }

            public Guid TreeNodeQueryID { get; set; }
        }
    }

    // The MetadataTypeAttribute identifies TreeNodeRootSourceMetadata as the class
    // that carries additional metadata for the TreeNodeRootSource class.
    [MetadataTypeAttribute(typeof(TreeNodeRootSource.TreeNodeRootSourceMetadata))]
    public partial class TreeNodeRootSource
    {

        // This class allows you to attach custom attributes to properties
        // of the TreeNodeRootSource class.
        //
        // For example, the following marks the Xyz property as a
        // required property and specifies the format for valid values:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class TreeNodeRootSourceMetadata
        {

            // Metadata classes are not meant to be instantiated.
            private TreeNodeRootSourceMetadata()
            {
            }

            public string Source { get; set; }

            [Include(), Association("TreeNodeRootSource_TreeNodeBase", "TreeNodeBaseID", "TreeNodeBaseID")]
            public TreeNodeBase TreeNodeBase { get; set; }

            public Guid TreeNodeBaseID { get; set; }

            public Guid TreeNodeRootSourceID { get; set; }
        }
    }
}
